/*
 ------------------------------------------------------------------------------
 Copyright (C) 2013 Eternal Games.

 This file is part of the GLQuake source code.

 The GLQuake source code is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or (at your
 option) any later version.

 The GLQuake source code is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 more details.

 You should have received a copy of the GNU General Public License along with
 the GLQuake source code; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 ------------------------------------------------------------------------------
*/


//
// gui_public.h - public header to all other files
//


#ifndef __GUI_PUBLIC_H__
#define __GUI_PUBLIC_H__


/*
 ==============================================================================

 Graphical User Interface:

 The GUI system manages all user interaction with the game.

 A GUI, such as the main menu, defines its layout and scripted events through
 text files.

 Loading screens and heads-up displays also use GUI definitions.

 Composite GUIs can be rendered to textures and mapped onto surfaces in the
 world. Although the user can't interact with them directly, it is possible to
 interact with them through game entities.

 ==============================================================================
*/

typedef struct guiDef_t				guiDef_t;

// Loads and registers the given GUI
gui_t *			GUI_Register (const char *name);

void			GUI_Activate (gui_t *gui, int time);

void			GUI_Close ();

void			GUI_KeyEvent (int key, bool down);

void			GUI_CharEvent (int c);

void			GUI_MouseMove (float x, float y);

// Redraws the given GUI
void			GUI_ReDraw ();

// Initializes the GUI subsystem
void			GUI_Init ();

// Shuts down the GUI subsystem
void			GUI_Shutdown ();


#endif	// __GUI_PUBLIC_H__